package com.sprouting.metadata.core.interfaces;

import com.sprouting.metadata.core.model.TableModel;
import com.sprouting.metadata.core.model.ColumnModel;

import java.util.List;

/**
 * 元数据查询过程接口
 * 实现该接口则可以在项目中查询的时候下面的方法
 *
 * @author ：LX（长沙麓谷）
 * @date 创建时间： 2022/4/22 16:10
 */
public interface MetadataQueryProcessInterfaces {

    /**
     * 开始处理
     * 获取表信息之前的处理
     */
    void start();

    /**
     * 处理字段
     * 获取到表信息和字段信息时的处理，获取到一个字段调用一次
     * @param table 表
     * @param column 字段
     */
    void processColumn(TableModel table, ColumnModel column);

    /**
     * 处理表
     * 获取到表的处理，获取到一个表调用一次
     * @param table 表
     */
    void processTable(TableModel table);

    /**
     * 处理完成，获取所有的表和字段信息完成后的触发
     * @param introspectedTableList 表信息
     */
    void processComplete(List<TableModel> introspectedTableList);
}
